package catalina.connection;


import java.io.*;

/**
 * 封装Response对象，需要依赖于OutputStream
 *
 * 该对象需要提供核心方法，输出html
 */
public class Response {

    private OutputStream outputStream;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    private String data;

    public Response() {
    }

    public Response(OutputStream outputStream) {
        this.outputStream = outputStream;
    }


    // 使用输出流输出指定字符串
    public void output(String content) throws IOException {
        outputStream.write(content.getBytes());
    }

    /**
     *
     * @param path  url，随后要根据url来获取到静态资源的绝对路径，进一步根据绝对路径读取该静态资源文件，最终通过
     *                  输出流输出
     *              /-----> classes
     */
    public void outputHtml(String path){
        try {
            // 输入静态资源文件
            File file = new File(path);
            if(file.exists() && file.isFile()) {
                // 读取静态资源文件，输出静态资源
                this.data = StaticResourceUtil.outputStaticResource(new FileInputStream(file));
            }else{
                // 输出404
//                output(HttpProtocolUtil.getHttpHeader404());
                this.data = HttpProtocolUtil.getHttpHeader404();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
